package JDK8新性质.引用.方法引用;

import Arrays类.Student;

import java.util.Arrays;
import java.util.Comparator;

public class Test {
    public static void main(String[] args) {
        Student[] students = new Student[4];
        students[0] = new Student("蜘蛛精",169.5,23);
        students[1] = new Student("紫霞",163.8,26);
        students[2] = new Student("紫霞",163.8,26);
        students[3] = new Student("至尊宝",167.5,24);

        // 原始方法: 对数组中的学生对象, 按照年龄升序排序
        Arrays.sort(students, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getAge() - o2.getAge();// 按照年龄升序排序
            }
        });

        // 使用Lambda简化后的形式
//        Arrays.sort(students,((o1, o2) -> o1.getAge() - o2.getAge()));

        // 还可以简化,静态方法简化(使用要求: 如果某个Lambda表达式里只是调用一个静态方法,并且前后参数的形式一致, 就可以使用静态方法引用)
//        Arrays.sort(students,((o1, o2) -> CompareByDate.compareByAge(o1,o2)));
        Arrays.sort(students,CompareByDate::compareByAge);// 静态方法引用   用法: 类名::静态方法

        CompareByDate compare = new CompareByDate();
        Arrays.sort(students, compare::compareByAgeDesc);// 实例方法引用    用法: 对象名::实例方法

        System.out.println(Arrays.toString(students));
    }
}
